package cl.tinet.trainee.salas.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Clase contendra si una sala es o fue reservada.
 * 
 * @author Naht-Sams
 */
@Entity
@Table(name = "RESERVA_SALA")
public class ReservaSala implements Serializable {
    /**
     * Version serial.
     */
    private static final long serialVersionUID = 2357735162896274076L;
    /**
     * Objeto de la tabla usuario. Obtener datos del usuario que esta haciendo
     * la reserva.
     */
    @Id
    @Column(name = "cod_reserva")
    private int codReserva;
    /**
     * Codigo de la sala que hace referencia.FK.
     */
    @Column(name = "username_reserva")
    private String username;
    /**
     * Codigo de la sala dentro de la tabla reservas.
     */
    @Column(name = "cod_sala_reserva")
    private int cod_sala;
    /**
     * Fecha y hora de inicio que se reservo la sala.
     */
    @Column(name = "fecha_inicio")
    private Date fechaInicio;
    /**
     * Fecha y hora de termino de la reserva de la sala.
     */
    @Column(name = "segmento_inicial")
    private Date segmentoInicial;
    /**
     * Fecha y hora de termino de la reserva de la sala.
     */
    @Column(name = "segmento_termino")
    private Date segmentoFinal;
    /**
     * Estado en que se encuentra la sala en ese determinado momento. 0
     * Ocupada. 1 Libre.
     */
    @Column(name = "estado")
    private boolean estado;

    /**
     * Allows to get the codReserva attribute value.
     * 
     * @return the codReserva value.
     */
    public int getCodReserva() {
        return codReserva;
    }

    /**
     * Allows to set the codReserva attribute value.
     * 
     * @param codReserva
     *            new value for codReserva attribute.
     */
    public void setCodReserva(int codReserva) {
        this.codReserva = codReserva;
    }


    /**
     * Allows to get the fechaInicio attribute value.
     * 
     * @return the fechaInicio value.
     */
    public Date getFechaInicio() {
        return fechaInicio;
    }

    /**
     * Allows to set the fechaInicio attribute value.
     * 
     * @param fechaInicio
     *            new value for fechaInicio attribute.
     */
    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }


    /**
     * Allows to get the estado attribute value.
     * 
     * @return the estado value.
     */
    public boolean isEstado() {
        return estado;
    }


    /**
     * Allows to set the estado attribute value.
     * 
     * @param estado
     *            new value for estado attribute.
     */
    public void setEstado(boolean estado) {
        this.estado = estado;
    }



    /**
     * Allows to get the username attribute value.
     * @return the username value.
     */
    public String getUsername() {
        return username;
    }

    /**
     * Allows to set the username attribute value.
     *
     * @param username new value for username attribute.
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * Allows to get the cod_sala attribute value.
     * @return the cod_sala value.
     */
    public int getCod_sala() {
        return cod_sala;
    }

    /**
     * Allows to set the cod_sala attribute value.
     *
     * @param cod_sala new value for cod_sala attribute.
     */
    public void setCod_sala(int cod_sala) {
        this.cod_sala = cod_sala;
    }

    /**
     * Allows to get the serialversionuid attribute value.
     * 
     * @return the serialversionuid value.
     */
    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    /**
     * Allows to get the segmentoInicial attribute value.
     * 
     * @return the segmentoInicial value.
     */
    public Date getSegmentoInicial() {
        return segmentoInicial;
    }

    /**
     * Allows to set the segmentoInicial attribute value.
     * 
     * @param segmentoInicial
     *            new value for segmentoInicial attribute.
     */
    public void setSegmentoInicial(Date segmentoInicial) {
        this.segmentoInicial = segmentoInicial;
    }

    /**
     * Allows to get the segmentoFinal attribute value.
     * 
     * @return the segmentoFinal value.
     */
    public Date getSegmentoFinal() {
        return segmentoFinal;
    }

    /**
     * Allows to set the segmentoFinal attribute value.
     * 
     * @param segmentoFinal
     *            new value for segmentoFinal attribute.
     */
    public void setSegmentoFinal(Date segmentoFinal) {
        this.segmentoFinal = segmentoFinal;
    }

}
